package com.ysactive.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 *  @author: june
 *  @Date: 2020/12/10
 *  @Description: MP自动生成
 */
public class CodeGeneration {

    //main函数
    public static void main(String[] args) {

        AutoGenerator autoGenerator = new AutoGenerator();

        //全局配置
        GlobalConfig gc = new GlobalConfig();
        String oPath = System.getProperty("user.dir");  //得到当前项目的路径
        gc.setOutputDir(oPath + "/src/main/java");      //生成文件的输出目录【默认 D 盘根目录】
        gc.setOpen(false);                              //是否打开输出目录(生成完成后不弹出文件框) 默认为true
        gc.setFileOverride(true);                       //是否覆盖已有文件 默认为false
        gc.setActiveRecord(false);                      // 不需要ActiveRecord特性的请改为false
        gc.setEnableCache(false);                       // XML 二级缓存
        gc.setBaseResultMap(true);                      // XML ResultMap
        gc.setBaseColumnList(false);                    // XML columLis
        gc.setAuthor("gcj");                           // 作者
        gc.setSwagger2(false);                           //开启 swagger2 模式 默认为false
        /**
         * 各层文件名称方式，例如： %sAction 生成 UserAction
         * %s 为占位符
         */
        gc.setControllerName("%sController");
        gc.setServiceName("%sService");
        gc.setServiceImplName("%sServiceImpl");
        gc.setMapperName("%sMapper");
//        gc.setXmlName("%sMapperXml");
        gc.setEntityName("%sEntity");
        autoGenerator.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL);                    //设置数据库类型
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");  //驱动
        dsc.setUsername("root");                        //用户名
        dsc.setPassword("123456");                       //密码
        //指定数据库
        dsc.setUrl("jdbc:mysql://124.222.115.153:3306/ysactive?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true");
        autoGenerator.setDataSource(dsc);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);      // 表名生成策略 驼峰
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//列命名规范  驼峰
        strategy.setInclude(new String[]{"tb_video22"});// 需要生成代码的表
        strategy.setEntityLombokModel(true);                        //【实体】是否为lombok模型（默认 false）
        //设置父级类 如果有基础服务类就写该基础服务类地址 默认没有 其他亦然
//        strategy.setSuperServiceClass("com.admin.sys.service.BaseService");
//        strategy.setSuperServiceClass("com.ysactive.BaseService");
//        strategy.setSuperServiceImplClass("com.ysactive.service.impl.BaseServiceImpl");
//        strategy.setSuperMapperClass("com.example.mybatisplusdemo.common.mapper.CoreMapper");
//        strategy.setSuperControllerClass("");
//        strategy.setSuperEntityClass("com.ysactive.BaseEntity");
        strategy.setTablePrefix("tb_");                     //去除表前缀
        strategy.setFieldPrefix("");                        //去除字段前缀
        autoGenerator.setStrategy(strategy);

        //模板路径配置项 默认路径为templates下 其他亦然
//        TemplateConfig tc = new TemplateConfig();
//        //tc.setController("/templates/admin/controller.java");templates.generator
//        tc.setMapper("");
//        autoGenerator.setTemplate(tc);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.ysactive");    //父包路径
        pc.setMapper("mapper");
        pc.setController("controller");//设置在父包路径下的包名
        pc.setService("service");
        pc.setEntity("entity");
        pc.setServiceImpl("service.impl");

//        pc.setXml("mapper.xml");
        autoGenerator.setPackageInfo(pc);
        // 执行生成
        autoGenerator.execute();
    }
}
